From 1e01a066eb4a018428f372aea9e4f7ffaaa3747a Mon Sep 17 00:00:00 2001 From: Ian Campbell Date: Tue, 27 Jul 2010 16:58:26 +0100 Subject: [PATCH] libxl: return libxl_dominfo from libxl_event_get_domain_death_info Removes a libxc data type from the libxl interface. Signed-off-by: Ian Campbell Committed-by: Ian Jackson --- tools/libxl/libxl.c | 13 ++++++------- tools/libxl/libxl.h | 2 +- tools/libxl/xl_cmdimpl.c | 7 +++---- 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c index 3a76b9dfa4..efeb7118f3 100644 --- a/tools/libxl/libxl.c +++ b/tools/libxl/libxl.c @@ -702,20 +702,19 @@ int libxl_free_waiter(libxl_waiter *waiter) return 0; } -int libxl_event_get_domain_death_info(struct libxl_ctx *ctx, uint32_t domid, libxl_event *event, xc_domaininfo_t *info) +int libxl_event_get_domain_death_info(struct libxl_ctx *ctx, uint32_t domid, libxl_event *event, struct libxl_dominfo *info) { int rc = 0, ret; - if (event && event->type == LIBXL_EVENT_DOMAIN_DEATH) { - ret = xc_domain_getinfolist(ctx->xch, domid, 1, info); - if (ret == 1 && info->domain == domid) { - if (info->flags & XEN_DOMINF_running || - (!(info->flags & XEN_DOMINF_shutdown) && !(info->flags & XEN_DOMINF_dying))) + ret = libxl_domain_info(ctx, info, domid); + + if (ret == 0 && info->domid == domid) { + if (info->running || (!info->shutdown && !info->dying)) goto out; rc = 1; goto out; } - memset(info, 0, sizeof(xc_dominfo_t)); + memset(info, 0, sizeof(*info)); rc = 1; goto out; } diff --git a/tools/libxl/libxl.h b/tools/libxl/libxl.h index 88c451c30c..950189c188 100644 --- a/tools/libxl/libxl.h +++ b/tools/libxl/libxl.h @@ -393,7 +393,7 @@ int libxl_stop_waiting(struct libxl_ctx *ctx, libxl_waiter *waiter); int libxl_free_event(libxl_event *event); int libxl_free_waiter(libxl_waiter *waiter); -int libxl_event_get_domain_death_info(struct libxl_ctx *ctx, uint32_t domid, libxl_event *event, xc_domaininfo_t *info); +int libxl_event_get_domain_death_info(struct libxl_ctx *ctx, uint32_t domid, libxl_event *event, struct libxl_dominfo *info); int libxl_event_get_disk_eject_info(struct libxl_ctx *ctx, uint32_t domid, libxl_event *event, libxl_device_disk *disk); int libxl_domain_rename(struct libxl_ctx *ctx, uint32_t domid, diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c index 839fea0c29..8cae2597e9 100644 --- a/tools/libxl/xl_cmdimpl.c +++ b/tools/libxl/xl_cmdimpl.c @@ -1335,7 +1335,7 @@ start: while (1) { int ret; fd_set rfds; - xc_domaininfo_t info; + struct libxl_dominfo info; libxl_event event; libxl_device_disk disk; memset(&info, 0x00, sizeof(xc_domaininfo_t)); @@ -1351,11 +1351,10 @@ start: case LIBXL_EVENT_DOMAIN_DEATH: if (libxl_event_get_domain_death_info(&ctx, domid, &event, &info)) { LOG("Domain %d is dead", domid); - if (info.flags & XEN_DOMINF_dying || (info.flags & XEN_DOMINF_shutdown && (((info.flags >> XEN_DOMINF_shutdownshift) & XEN_DOMINF_shutdownmask) != SHUTDOWN_suspend))) { + if (info.dying || (info.shutdown && info.shutdown_reason != SHUTDOWN_suspend)) { LOG("Domain %d needs to be clean: destroying the domain", domid); libxl_domain_destroy(&ctx, domid, 0); - if (info.flags & XEN_DOMINF_shutdown && - (((info.flags >> XEN_DOMINF_shutdownshift) & XEN_DOMINF_shutdownmask) == SHUTDOWN_reboot)) { + if (info.shutdown && info.shutdown_reason == SHUTDOWN_reboot) { libxl_free_waiter(w1); libxl_free_waiter(w2); free(w1); -- 2.30.2